package edu.uci.ics.jung.algorithms.util;

import org.apache.commons.collections15.Predicate;

import edu.uci.ics.jung.graph.Graph;
import edu.uci.ics.jung.graph.util.Context;
import edu.uci.ics.jung.graph.util.Pair;

/**
 * A <code>Predicate</code> that returns <code>true</code> if the input edge's
 * endpoints in the input graph are identical. (Thus, an edge which connects its
 * sole incident vertex to itself).
 *
 * @param <V>
 * @param <E>
 */
public class SelfLoopEdgePredicate<V, E>
		implements Predicate<Context<Graph<V, E>, E>> {

	@Override
	public boolean evaluate(Context<Graph<V, E>, E> context) {
		Pair<V> endpoints = context.graph.getEndpoints(context.element);
		return endpoints.getFirst().equals(endpoints.getSecond());
	}
}
